
import store from "../store/index.js"



/*
   案例：this.$Tools.deepCapy(a,b);
*/

//深拷贝 只能自己封装方法 用递归的方式将旧对象中复合数据类型的属性值 
// 拆为一个一个的基本类型 再一个一个的赋给新对象 对应的属性值,从而达到解除多层引用的关系
//作用：解除多层引用的关系

export function deepCapy(new_obj, old_obj) {
  //先遍历老对象
  for (var Item in old_obj) {
    //将老对象的每一项的属性值暂时存储到main变量中
    var main = old_obj[Item];
    // console.log('main=>',main)

    //然后判断每一项属性值是什么类型
    if (main instanceof Array) { //如果是数组
      // 将对应的新对象属性值 转为 空数组
      new_obj[Item] = [];
      // console.log('Array_main=>',main)
      //用递归 将每一项属性值 类型  为数组 的都给遍历
      deepCapy(new_obj[Item], main);
    } else if (main instanceof Object) { //如果是对象
      // 将对应的新对象属性值 转为 空对象
      new_obj[Item] = {};
      // console.log('Object_main=>',main);
      //用递归 将每一项属性值 类型  为对象 的都给遍历
      deepCapy(new_obj[Item], main);

    } else { //如果是Js的基本类型 null undefined String Number Boolean 
      //因为最后的数据都为基本类型 
      //再赋予对应的属性值
      new_obj[Item] = main;
    }
  }
  //再返回赋值后的新对象
  return new_obj
}


export function ff_time(time) {
 function add0(m) {
  return m < 10 ? "0" + m : m;
 }

 function format(shijianchuo) {
  //shijianchuo是整数，否则要parseInt转换
  var time = new Date(shijianchuo);
  var y = time.getFullYear();
  var m = time.getMonth() + 1;
  var d = time.getDate();
  var h = time.getHours();
  var mm = time.getMinutes();
  var s = time.getSeconds();
  return (
   y +
   "-" +
   add0(m) +
   "-" +
   add0(d)
   // " " +
   // add0(h) +
   // ":" +
   // add0(mm) +
   // ":" +
   // "00"
  );
 }

 var time = format(time);
 // debugger
 return time;
}

// 将图片转换为Base64 callback
export function urlTobase64(img) {
	return new Promise((resolve, reject) => {
		uni.downloadFile({
			url: img,
			success: res => {
				console.log("下载成功1",res)
				uni.getFileSystemManager().readFile({
					filePath: res.tempFilePath, //选择图片返回的相对路径
					encoding: 'base64', //编码格式
					success: resFile => { //成功的回调
					console.log("下载成功",resFile)
						resolve('data:image/png;base64,' + resFile.data)
					}
				})
			}
		})
	})
}

// 修改时间格式
export function setDate(date, type){
	date = new Date(date);
	let t_ = '.'
	if(type == 1){
		t_ = '-'
	}
	if(type == 2){
		t_ = '/'
	}
	return date.getFullYear() + t_ + setHoursMinutes((date.getMonth() + 1)) + t_ + setHoursMinutes(date.getDate()) + ' ' + setHoursMinutes(date.getHours()) + ':' + setHoursMinutes(date.getMinutes())
}

// 修改时间格式
export function setDateBirthday(date){
	date = new Date(date);
	let t_ = '-'
	return date.getFullYear() + t_ + setHoursMinutes((date.getMonth() + 1)) + t_ + setHoursMinutes(date.getDate())
}

export function startToEnd(s1, s2){
	return setDate(s1) + ' - ' + setDate(s2)
}

function setHoursMinutes(e){
	if(e < 10){
		return  "0"+e
	}
	return e
	
}

export function setTime(date){
 date = new Date(date);
    function add0(m) {
     return m < 10 ? "0" + m : m;
    }
 return date.getFullYear() + '-' + add0((date.getMonth() + 1)) + '-' + add0(date.getDate())
}

/**
 * 生成随机或者指定位数的英文数字组合
 * @param {boolean} randomFlag	是否是随机生成位数
 * @param {number} min 			生成随机位数的最小数
 * @param {number} max			生成随机位数的最大数
 * @return {string}				返回生成的英文数字组合
*/
export function randomWord(randomFlag, min, max) {
	let str = '',
			range = min,	// 默认赋值为第二个参数，如果是随机产生位数会通过下面的if改变。
			arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
	
		// 随机产生
		if (randomFlag) {
			range = Math.round(Math.random() * (max - min)) + min;
		}
		for (let i = 0; i < range; i++) {
			let index = Math.round(Math.random() * (arr.length - 1));
			str += arr[index];
		}
		return str;
}

// 返回银行卡格式
export function Cardformat(Number="2021091114204263987972"){

   let newNum = Number.toString().substring(0,Number.length-4);
   
   let StrNum =  newNum.split('');
   let newArr = [];
   let numStr = "";
   StrNum.forEach((item,index)=>{
    numStr = `${numStr}${item}`;
    if(numStr.length == 4 || index+1 == StrNum.length){
     newArr.push(numStr);
     numStr = "";
    }
   })
   let Cardformat = newArr.join(' ');
   return Cardformat;
}